/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejb.negozio;

import common.FornituraEstesa;
import ejb.common.DettaglioPrezzoManagerLocal;
import ejb.common.FornituraManagerLocal;
import entity.DettaglioPrezzo;
import entity.Fornitura;
import entity.Prodotto;
import java.util.*;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

/**
 *
 * @author Antonio
 */
@Stateless
public class FornituraEJB implements FornituraEJBLocal {

    @EJB
    private DettaglioPrezzoManagerLocal dettaglioPrezzoManager;
    @EJB
    private FornituraManagerLocal fornituraManager;
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public boolean generaFornituraEstesa(FornituraEstesa fornituraE) {

        if (fornituraE == null) {
            throw new NullPointerException();
        }

        Fornitura f = fornituraE.getFornitura();
        DettaglioPrezzo dp = fornituraE.getDettaglioPrezzo();

        fornituraManager.creaFornitura(f);
        dettaglioPrezzoManager.inserisciDettaglio(dp);

        return true;

    }// generaFornituraEstesa

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public boolean generaFornitureEstese(List<FornituraEstesa> fornitureE) {

        if (fornitureE.isEmpty()) {

            return false;
        }

        Fornitura f;
        DettaglioPrezzo dp;

        for (FornituraEstesa fe : fornitureE) {

            f = fe.getFornitura();
            dp = fe.getDettaglioPrezzo();

            fornituraManager.creaFornitura(f);
            dettaglioPrezzoManager.inserisciDettaglio(dp);
        }
        return true;
    }// generaFornitureEstese

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public boolean generaFornitureAggDettaglio(List<FornituraEstesa> fornitureE) {

        if (fornitureE.isEmpty()) {

            return false;
        }

        Fornitura f;
        DettaglioPrezzo dp;

        for (FornituraEstesa fe : fornitureE) {

            f = fe.getFornitura();
            dp = fe.getDettaglioPrezzo();

            fornituraManager.creaFornitura(f);
            dettaglioPrezzoManager.aggiornaDettaglio(dp);
        }
        return true;
    }// generaFornituraAggDettaglio

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public boolean rimuoviFornituraEstesa(Prodotto prodotto, Fornitura fornitura) {

        if (prodotto == null || fornitura == null) {

            throw new NullPointerException();
        }

        DettaglioPrezzo d = new DettaglioPrezzo();
        d.setNegozio(fornitura.getNegozio());
        d.setProdotto(prodotto);
        dettaglioPrezzoManager.rimuoviDettaglio(d);


        fornituraManager.rimuoviFornitura(fornitura);
        return true;
    }// rimuoviFornituraEstesa
}
